<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;

class UserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
//        return false;
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */

    /*表单请求验证（FormRequest） 是 Laravel 框架提供的用户表单数据验证方案，
    此方案相比手工调用 validator 来说，能处理更为复杂的验证逻辑*/
    public function rules()
    {
        return [
            //
            /*name' => 'required|between:3,25|regex:/^[A-Za-z0-9-_]+$/|unique:users,name,' . Auth::id()

            以上分解下来，是以下规则；

            required —— 必须输入；
            between:3,25 —— 字符数在 3 ~ 25 范围内；
            regex:/^[A-Za-z0-9-_]+$/ —— 正则表达式，过滤只允许字母大小写、数字、横杆和下划线；
            unique:users,name,' . Auth::id() —— unique 数据库唯一，在 users 数据表里，字段为 name，Auth::id() 指示将此 ID 排除在外。
            unique 的完整格式为：

            unique:table,column,except,idColumn
            完整意思为：

            在 table 数据表里检查 column ，除了 idColumn 为 except 的数据。

            except 一般在『更新』的表单验证里使用，假设你已经注册了 summer 用户，在更新 summer 用户的表单验证时，
            你要验证数据库里 summer 用户名是否是唯一的，因为你的数据库里已经有 summer 用户了，所以必须将 summer 用户排除，否则永远是验证不通过。*/

            'name' => 'required|between:3,25|regex:/^[a-zA-Z0-9\-\_]+$/|unique:users,name,'.Auth::id(),
            'email' => 'required|email',
            'introduction' => 'max:80',
            'avatar' => 'mimes:jpeg,bmp,png,gif|dimensions:min_width=200,min_height=200',
        ];
    }


    public function messages()
    {
//        return parent::messages(); // TODO: Change the autogenerated stub
        return [
            'avatar.mimes' =>'头像必须是 jpeg, bmp, png, gif 格式的图片',
            'avatar.dimensions' => '图片的清晰度不够，宽和高需要 200px 以上',
            'name.unique' => '用户名已占用，请重新填写',
            'name.regex' => '用户名只支持字母、数字、横杠和下划线',
            'name.between' => '用户名必须介于 3-25 个字符之间',
            'name.required' => '用户名不能为空',

        ];
    }
}
